$(document).ready(function(){
    var root_dir = window.location.pathname.split("/")[1];
    var base_url = window.location.host + "/" + root_dir;
    
    jQuery.extend(
        jQuery.validator.messages, {
            required: "Por favor, ingrese este campo."
        }
        );

    $("#nueva-orden").validate({
        submitHandler: function(form) {
            if($("#profesional").val() != "" || $("#plus").val() == 2 || $("#plus").val() == 5) {
                // Form is valid
                form.submit();
            }
            else {
                //Form is invalid
                alert('Por favor, ingrese un profesional válido.');
            }
        }
    });
    
    $("#btn-ver-datos-orden").click(function(){
       $(this).removeClass('button-disable');
       $(".notificacion #texto").empty();
       $(".notificacion").hide();
       $.ajax({
           url:  "http://" + base_url + "/orden/validar_datos",
            type: "POST",
            data: {
                prof: $("#profesional").val()
            },
            success:function(error_msj){
                if(error_msj){
                    mostrar_notificacion(".filtro-nombre .notificacion", error_msj);           
                }
                else{
                    $("#nueva-orden").submit();
                }
            }
       });
       return false;
    });
    
    
    $("#plus").live("change", function(){
        if($("#plus").val() == 2 || $("#plus").val() == 5){  // If "Guardia Sanatorial" was selected 
            $("#filtro-profesionales").hide(500);
            $("#profesional").val("");
            $("#nombre-profesional").val("");
        }
        else{
            $("#filtro-profesionales").show(500);
        }
    });
    
    // Borrar todo el texto en nombre-profesional de una sola vez con el backspace para Firefox
    $("#nombre-profesional").keypress(function(e){
        delete_all_text(e);
        ocultar_notificacion(".filtro-nombre .notificacion");
    }); 
    
    // Borrar todo el texto en nombre-profesional de una sola vez con el backspace para IE y Chrome
    $("#nombre-profesional").keydown(function(e){
        delete_all_text(e);
        ocultar_notificacion(".filtro-nombre .notificacion");
    }); 

    // Cerrar session con boton
    $("#fin").click(function(){
        window.location = base_url + "/loginuser/close";
    });
    
    $("#btn-filtro-especialidad").click(function(){
        $("#capa-intermedia").fadeIn("slow");    //Bloquear los elementos que quedan en el fondo
        $("#filtro-especialidad").fadeIn("slow");
        $("#filtro-especialidad").css({
            left : ($(window).width() - $('#filtro-especialidad').width()) / 4
        })
    });
    
    function delete_all_text(event){
        if(event.keyCode == 8){ // If backspace was pressed 
            $("#nombre-profesional").val("");
            $("#profesional").val("");
        }
    };
    
    function ocultar_notificacion(selector){
        $(selector).hide();
        $(selector + " #texto").html("");
    };

    function mostrar_notificacion(selector, msj){
        $(selector).show();
        $(selector + " #texto").html(msj);
    };
    
    /**************** Filtro por especialidad *******************/
    
    /* Traer desde el servidor todos los profesionales de la especialidad elegida en #select-especialidades */
    $('#select-especialidades').live("change", function(){
        $("#result").empty();    // Se vacía la lista si ya había profesionales listados.
        $(".no-results").remove();
        $("#area-result").prepend("<div class='loading'></div>");
        ocultar_notificacion("#filtro-especialidad .notificacion");
        
        $.ajax({
            url:  "/" + root_dir + "/profesional/find_by_especialidad",
            type: "POST",
            data: {
                esp: $(this).val()
            },
            success: function(result){
                $(".loading").remove();
                obj = JSON.parse(result);
                
                $("#btn-aceptar-filtro-especialidad").removeClass("button-disable");
                if(obj.length > 0){
                    if(obj[0].error){
                        mostrar_notificacion("#filtro-especialidad .notificacion", obj[0].error);
                        obj.splice(0, 1);   // Borro el primer elemento, que es el error, 
                                            // para poder iterar con todo el resto de los elementos 
                                            // en $.map
                        $("#btn-aceptar-filtro-especialidad").addClass('button-disable');
                    
                    }
                    
                    // Agrega todos los profesionales encontrador
                    $.map(obj, function(item){
                        $("#result").append("\
                            <li>\n\
                                <a id='" + item.idprofesional + "' class='item-profesional' href='#'>" + 
                            item.nombre + 
                            "</a>\n\
                            </li>")
                    })
                }
                else{
                    $("#area-result").prepend("<div class='no-results'>No se encontraron profesionales</div>")
                }
            }
        })
    });
    
    /* Resaltar el profesional seleccionado en el <ul> */
    $(".item-profesional").live("click", function(){
        $(".item-profesional").removeClass("item-profesional-seleccionado");
        $(this).addClass("item-profesional-seleccionado");
    });
    
    /*  Si se acepta el profesional seleccionado, se cargan los datos */
    $("#btn-aceptar-filtro-especialidad").click(function(){
        if($(this).hasClass('button-disable')){
            return false;
        }
        else{
            var nombre_profesional = $(".item-profesional-seleccionado").text()
            var id_profesional = $(".item-profesional-seleccionado").attr("id");
            
            $("#nombre-profesional").val(nombre_profesional);
            $("#profesional").val(id_profesional);
            ocultar_notificacion(".filtro-nombre .notificacion");
            $("#filtro-especialidad").fadeOut(500);
            $("#capa-intermedia").fadeOut();  // desbloquear todos los elementos de fondo
        }
        return true;
    });
    
    $("#btn-cancelar-filtro-especialidad").click(function(){
        $("#filtro-especialidad").fadeOut(500);
        $("#capa-intermedia").fadeOut();  // desbloquear todos los elementos de fondo
    })
    
});